2023/12/233626字符
Array
两种创建方法
var arr = new Array(10); // 创建十个空数组 (第一位不能写小数)
var arr = [10]; // 创建数组,内有一个 10
console.log(new Array(10)); //--> empty*10 ES5
console.log(arr[-1]); //--> undefined 数组不会报错
改变原数组
var arr = [];
arr[0] = 0; // 更改数组内容
arr[3] = 3;
console.log(arr); //--> 0,,,3
var arr = [2, 3, 4, 5, 6];
arr.unshift(1); //--> [1,2,3,4,5,6] 头部添加元素
arr.shift(); //--> [3,4,5,6] 头部剪切元素
arr.push(7); //--> [2,3,4,5,6,7] 尾部添加元素
arr.pop(); //--> [2,3,4,5] 尾部剪切元素
delete arr[2]; //--> [2,3,5,6] 删除指定元素
arr.reverse(); //--> [6,5,4,3,2] 颠倒顺序
var arr = [1,2,3,4,5];
splice(-3, 2); //--> [1,2,5] arr.splice(从倒数第几位开始, 截取多少长度, 在切口处添加新的数据)
用 splice() 将 4 添加到 3 和 5 的中间
var arr = [1, 2, 3, 5];
console.log(arr.splice(3, 0, 4)); //--> [1,2,3,4,5]
push 原理
Array.prototype.push = function () {
for(var i = 0; i < arguments.length; i ++){
this[this.length] = arguments[i];
}
return this.length;
}
splice 原理
splice = function (pst) {
pst += pst > 0 ? 0 : this.length;
}
数组排序
arr.sort(); // 升序(只检测首位数字)
arr.sort().reverse(); // 倒序(只检测首位数字)
arr.sort(function (a, b) {
return a - b; // 升序
// a - b; // 倒序
});
arr.sort(function () {
return Math.random() - 0.5; // 乱序
});
用 sort() 方法将数组按字节长度排序
var arr = ["abc", "汪汪汪", "王", "老王", "小王"];
function retBytes (str) {
var num = str.length;
for (var i = 0; i < num; i ++) {
if (str.charCodeAt(i) > 255) {
num ++;
}
}
return num;
}
arr.sort(function (a, b) {
return retBytes(a) - retBytes(b);
}); //--> ["王", "abc", "老王", "小王", "汪汪汪"]
不改变原数组
concat() 连接两个或多个数组
var arr = [2, 3, 4, 5, 6],
arr1 = [7, 8, 9],
arr2 = "arroge";
arr.concat(arr1, arr2); //--> 2,3,4,5,6,7,8,9,"arroge"
string
arr.toString(); //--> "2,3,4,5,6" 转换为字符串
arr.join("/"); //--> [2/3/4/5/6] 更改分隔符
arr.split("/"); //--> ["2","3","4","5","6"] 将字符串分割成字符串数组
arr.split("4"); //--> ["2-3-","-5-6"]
slice() 截取数组
arr.slice(1, 3); //--> [3,5] 截取数组
arr.slice(-2); //--> [5, 6] 从倒数第几位开始截取之后数组
arr.slice(); //--> [2, 3, 4, 5, 6] 整个截取(类数组转换为数组,克隆)
数组去重
function unique(arr){
var newArr = [];
for(var i = 0;i < arr.length; i ++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 5, 4, 3, 4];
unique(arr); //--> [1, 2, 3, 4, 5]
数组去重(在原型上添加方法)
Array.prototype.unique = function(){
var temp = {},
arr = [],
for(var i = 0; i < this.length; i ++){
if(!temp[this[i]]){
temp[this[i]] = "str";
arr.push(this[i]);
}
}
return arr;
}
var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 5, 4, 3, 4];
arr.unique(); //--> [1, 2, 3, 4, 5]